/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package server;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import mail.Message;

/**
 *
 * @author Lab-214-21
 */
public class MailServer {

    ListaMensaje lista;
    int secuencia;
/**
 * Constructor que inicializa la lista de mail
 */
    public MailServer() {
        lista = new ListaMensaje();
        secuencia = 1;
    }
   /**
    * 
    * @param name nombre del usuario conectado
    * @return Devuelve la cantidad de mensajes de un usuario especifico 
    */
    public int getMessagesWaiting(String name) {
        int cantidad = 0;
        Iterator it = lista.iterar();
        while (it.hasNext()) {
            Message objeto = (Message) it.next();
            String mensajes = objeto.mostrarMensaje();
            String V[] = mensajes.split(",");
            if (V[1].equals(name)) {
                cantidad = cantidad + 1;
            }
        };

        return cantidad;
    }

    /**
     * 
     * @param name Nombre de usuario
     * @return Devuelva todos los mensajes del usuario especifico 
     */
    private ArrayList<Message> obtenerMensajesRecibidos(String name) {
        ArrayList listaNueva = new ArrayList();
        Iterator it = lista.iterar();

        while (it.hasNext()) {
            Message objeto = (Message) it.next();
            String mensajes = objeto.mostrarMensaje();
            String V[] = mensajes.split(",");
            if (V[1].equals(name)) {
                listaNueva.add(objeto);
            }
        };

        return listaNueva;
    }
    /**
     * 
     * @param name Nombre de usuario
     * @return  Devuelve el primer mensaje de un usuario especifico
     */
    public Message getNextMessage(String name) {
        
        Iterator it = obtenerMensajesRecibidos(name).iterator();
        int i = 1;
        Message mensaje = null;
        while (it.hasNext()) {
            Message objeto = (Message) it.next();
            if (i == secuencia) {
                mensaje = objeto;
                secuencia = secuencia + 1;
                break;
            }
            i = i + 1;
        };

        return mensaje;
    }
    /**
     *  Metodo que agrega a la lista el mensaje recibido
     * @param mensaje Objeto tipo Message 
     */
    public void post(Message mensaje) {
        lista.adicionar(mensaje);
    }
}
